#include <iostream>
using namespace std;

//宏使用的问题一
#define ADD(x,y) x+y
inline int Add(int x,int y){
	return x + y;
}
void test(){
	int ret1 = ADD(10, 20) * 10; //希望的结果是300，预处理只是简单替换，括号的作用没有体现，预处理的结果为x+y*10来计算
	int ret2 = Add(10, 20) * 10; //希望结果也是300
	cout << "ret1:" << ret1 << endl; //210
	cout << "ret2:" << ret2 << endl; //300
}
//宏使用的问题二
#define COMPARE(x,y) ((x) < (y) ? (x) : (y))
int Compare(int x,int y){
	return x < y ? x : y;
}
void test02(){
	int a = 1;
	int b = 3;
	//cout << "COMPARE(++a, b):" << COMPARE(++a, b) << endl; // 3
	cout << "Compare(int x,int y):" << Compare(++a, b) << endl; //2
}




class Person
{
public:
    Person() { cout << "构造函数!" << endl; }
    void PrintPerson() { cout << "输出Person!" << endl; }
    //构造函数Person，成员函数PrintPerson在类的内部定义，自动成为内联函数
};

int main()
{
    cout << "hello" << endl;
    //在c++中，预定义宏的概念是用内联函数来实现的，而内联函数本身也是一个真正的函数。
    test();
    system("pause");
    return 0;
}